package com.stu.demo0519.demo5;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 姚东名
 * Date: 2024-05-20
 * Time: 11:06
 */
public class Test {
    public static void main(String[] args) {
        //方法的重写：子类与父类中方法 ->
        //1.方法的名字一样、2.参数列表一样(顺序、个数、类型都相同) 3.返回值一样
        Animal animal = new Animal("大黑", 19);
        animal.eat();
        System.out.println("====================");
        Animal animal1 = new Dog("旺财", 19);
        animal1.eat();
    }
    public static void main1(String[] args) {
        Dog dog = new Dog("旺财", 10);
        dog.bark();
        System.out.println("====================");
        //1.用父类的引用来初始化Dog对象 -> 父类引用 引用了子类对象
        //(1)直接赋值
        Animal animal = new Animal("大黄", 12);
        //animal.bark;//error
        animal.eat();//只能访问自己的成员方法
    }
        //(2)方法传参：
    public static void func(Animal animal) {
        System.out.println(animal.age);
    }
        //(3)返回值：
    public static Animal func() {
        Dog dog = new Dog("旺财1",1);
        return dog;
    }
    public static void main2(String[] args) {
        //多态的概念：通俗的来讲，就是多种形态，具体点去完成某个行为，当不同的对象去完成时会产生出不同的 状态
        //1.向上转型：子类/派生类 -> 父类/基类/超类
        //(1)直接赋值
        Animal animal = new Dog("旺财",10);
        animal.eat();
        System.out.println("====================");
        //(2)方法传参
        Dog dog = new Dog("旺财",10);
        func(dog);
        System.out.println("====================");
        //(3)返回值
        Animal animal2 = func();
        System.out.println(animal2);
    }
}
